home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Animation How-To
/
Animation How-to CD.iso
/
PLY
/
CHAPTER4
/
JELLYDIM
/
DIAMOVE.BAS
< prev
next >
Wrap
BASIC Source File
|
1994-01-01
|
6KB
|
285 lines
' Jellyfish Diamond Data File Generator
' (c) Jeff Bowermaster, 1992
TYPE vector
x AS SINGLE
y AS SINGLE
z AS SINGLE
END TYPE
pi = 3.1415926536#
radians = 180 / pi
DIM vertex(42) AS vector, triangle(3) AS vector
DIM red(16), green(16), blue(16)
' set the screen up with pretty rainbow colors
SCREEN 12
scale = .015
xoff = 320
yoff = 240
WINDOW ((0 - xoff) * scale, (0 - yoff) * scale)-((639 - xoff) * scale, (479 - yoff) * scale)
FOR y = 1 TO 4
FOR x = 1 TO 4
colornum = x + ((y - 1) * 4) - 1
READ red(colornum), green(colornum), blue(colornum)
KOLOR = 65536 * blue(colornum) + 256 * green(colornum) + red(colornum)
PALETTE colornum, KOLOR
COLOR colornum
NEXT x
NEXT y
'Rainbow Palette
DATA 0, 0, 0
DATA 32, 0, 0
DATA 42, 0, 0
DATA 58, 16, 0
DATA 63, 32, 0
DATA 58, 56, 0
DATA 16, 42, 0
DATA 0, 30, 36
DATA 0, 20, 40
DATA 0, 10, 48
DATA 0, 0, 63
DATA 20, 0, 53
DATA 23, 0, 29
DATA 19, 7, 17
DATA 50, 40, 45
DATA 63, 63, 63
pi = 3.1415926535#
rad = pi / 180
radius1 = 1
radius2 = 1.4
radius3 = 1.8
radius4 = .7
radius5 = .01
ht1 = 1
ht2 = .8
ht3 = .5
ht4 = -1
ht5 = -1.9
masteramp = 1.3
ampl1 = .03 * masteramp
ampl2 = .02 * masteramp
ampl3 = .01 * masteramp
ampl4 = .04 * masteramp
ampl5 = .05 * masteramp
phase = 80 'hump phase
phase1 = 0
phase2 = 25
phase3 = 50
phase4 = 75
phase5 = 87
aspect = .1 ' control the size of the ellipses in the simplified model
hump = 1.3
wave = 2
DO WHILE INKEY$ = ""
FOR ang = 0 TO 360 STEP 10
height1 = ht1 + ampl1 * (wave * COS(rad * (ang - phase1)) + EXP(hump * (1 + COS((ang - phase - phase1) * rad))))
height2 = ht2 + ampl2 * (wave * COS(rad * (ang - phase2)) + EXP(hump * (1 + COS((ang - phase - phase2) * rad))))
height3 = ht3 + ampl3 * (wave * COS(rad * (ang - phase3)) + EXP(hump * (1 + COS((ang - phase - phase3) * rad))))
height4 = ht4 + ampl4 * (wave * COS(rad * (ang - phase4)) + EXP(hump * (1 + COS((ang - phase - phase4) * rad))))
height5 = ht5 + ampl5 * (wave * COS(rad * (ang - phase5)) + EXP(hump * (1 + COS((ang - phase - phase5) * rad))))
newradius1 = radius1 * height1
newradius2 = radius2 * height2 * 1.3
newradius3 = radius3 * height3 * 2
newradius4 = radius4 * (1.9 + height4)
newradius5 = radius5
oval = 1
xfactor = 1 / oval
yfactor = oval / 1
FOR f = 1 TO 8
a = 360 * f / 8
vertex(f).x = newradius1 * xfactor * COS(rad * a)
vertex(f).y = newradius1 * yfactor * SIN(rad * a)
vertex(f).z = height1
vertex(f + 8).x = newradius2 * xfactor * COS(rad * (a + 22.5))
vertex(f + 8).y = newradius2 * yfactor * SIN(rad * (a + 22.5))
vertex(f + 8).z = height2
vertex(f + 16).x = newradius3 * xfactor * COS(rad * (a + 45))
vertex(f + 16).y = newradius3 * yfactor * SIN(rad * (a + 45))
vertex(f + 16).z = height3
vertex(f + 24).x = newradius3 * xfactor * COS(rad * (a + 67.5))
vertex(f + 24).y = newradius3 * yfactor * SIN(rad * (a + 67.5))
vertex(f + 24).z = height3
vertex(f + 32).x = newradius4 * xfactor * COS(rad * (a + 67.5))
vertex(f + 32).y = newradius4 * yfactor * SIN(rad * (a + 67.5))
vertex(f + 32).z = height4
NEXT f
vertex(41).x = 0
vertex(41).y = 0
vertex(41).z = height5
vertex(42).x = 0
vertex(42).y = 0
vertex(42).z = height1
' The triangular faces listed clockwise by vertex
'Crown
eek:
DATA 1,42,2
DATA 2,42,3
DATA 3,42,4
DATA 4,42,5
DATA 5,42,6
DATA 6,42,7
DATA 7,42,8
DATA 8,42,1
DATA 1,2,9
DATA 2,3,10
DATA 3,4,11
DATA 4,5,12
DATA 5,6,13
DATA 6,7,14
DATA 7,8,15
DATA 8,1,16
DATA 2,17,9
DATA 2,10,17
DATA 3,18,10
DATA 3,11,18
DATA 4,19,11
DATA 4,12,19
DATA 5,20,12
DATA 5,13,20
DATA 6,21,13
DATA 6,14,21
DATA 7,22,14
DATA 7,15,22
DATA 8,23,15
DATA 8,16,23
DATA 1,24,16
DATA 1,9,24
DATA 10,25,17
DATA 10,18,25
DATA 11,26,18
DATA 11,19,26
DATA 12,27,19
DATA 12,20,27
DATA 13,28,20
DATA 13,21,28
DATA 14,29,21
DATA 14,22,29
DATA 15,30,22
DATA 15,23,30
DATA 16,31,23
DATA 16,24,31
DATA 9,32,24
DATA 9,17,32
'Pavilion
DATA 17,40,32
DATA 24,32,40
DATA 24,40,39
DATA 24,39,31
DATA 23,31,39
DATA 23,39,38
DATA 23,38,30
DATA 22,30,38
DATA 22,38,37
DATA 22,37,29
DATA 21,29,37
DATA 21,37,36
DATA 21,36,28
DATA 20,28,36
DATA 20,36,35
DATA 20,35,27
DATA 19,27,35
DATA 19,35,34
DATA 19,34,26
DATA 18,26,34
DATA 18,34,33
DATA 18,33,25
DATA 17,25,33
DATA 17,33,40
DATA 40,33,41
DATA 40,41,39
DATA 39,41,38
DATA 38,41,37
DATA 37,41,36
DATA 36,41,35
DATA 35,41,34
DATA 34,41,33
xrotate = 0
yrotate = 20
zrotate = 0
RESTORE eek
FOR i = 1 TO 80
READ v(1), v(2), v(3)
FOR t = 1 TO 3
x0 = vertex(v(t)).x
y0 = vertex(v(t)).y
z0 = vertex(v(t)).z
X1 = x0
Y1 = y0 * COS(xrotate / radians) - z0 * SIN(xrotate / radians)
Z1 = y0 * SIN(xrotate / radians) + z0 * COS(xrotate / radians)
X2 = Z1 * SIN(yrotate / radians) + X1 * COS(yrotate / radians)
Y2 = Y1
Z2 = Z1 * COS(yrotate / radians) - X1 * SIN(yrotate / radians)
X3 = X2 * COS(zrotate / radians) - Y2 * SIN(zrotate / radians)
Y3 = X2 * SIN(zrotate / radians) + Y2 * COS(zrotate / radians)
z3 = Z2
triangle(t).x = X3
triangle(t).y = Y3
triangle(t).z = z3
NEXT t
centerx = (vertex(v(1)).x + vertex(v(2)).x + vertex(v(3)).x) / 3
centery = (vertex(v(1)).y + vertex(v(2)).y + vertex(v(3)).y) / 3
centerz = (vertex(v(1)).z + vertex(v(2)).z + vertex(v(3)).z) / 3
c = 16 - ((4 * (centerz / 1)) + 9) 'color code by height
LINE (triangle(1).y, triangle(1).z)-(triangle(2).y, triangle(2).z), 4 + i MOD 4
LINE (triangle(2).y, triangle(2).z)-(triangle(3).y, triangle(3).z), 4 + i MOD 4
LINE (triangle(3).y, triangle(3).z)-(triangle(1).y, triangle(1).z), 4 + i MOD 4
NEXT i
CLS
NEXT ang
LOOP